package com.hwd.gmall.product.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hwd.gmall.common.result.Result;
import com.hwd.gmall.model.product.BaseCategory2;
import com.hwd.gmall.product.service.BaseCategory2Service;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 二级分类的控制层
 *
 * @author 黄伟东/Victor
 * @date 2022/4/17 20:54
 */
@RestController
@RequestMapping(value = "/api/category2")
public class BaseCategory2Controller {

    @Resource
    private BaseCategory2Service baseCategory2Service;


    /**
     * 根据id获取二级分类表信息
     *
     * @param id 二级分类id
     * @return com.hwd.gmall.common.result.Result<com.hwd.gmall.model.product.BaseCategory2>
     */
    @GetMapping(value = "/getCategory2/{id}")
    public Result<BaseCategory2> getCategory2ById(@PathVariable(value = "id") Long id) {
        return Result.ok(baseCategory2Service.getById(id));
    }

    /**
     * 查询全部二节分类
     *
     * @return com.hwd.gmall.common.result.Result<java.util.List < com.hwd.gmall.model.product.BaseCategory2>>
     */
    @GetMapping(value = "/listCategory2s")
    public Result<List<BaseCategory2>> listCategory2s() {
        return Result.ok(baseCategory2Service.listCategory2s());
    }

    /**
     * 新增二级分类数据
     *
     * @param baseCategory2 二级分类数据
     * @return com.hwd.gmall.common.result.Result<java.lang.Object>
     */
    @PostMapping(value = "/saveCategory2")
    public Result<Object> saveCategory2(@RequestBody BaseCategory2 baseCategory2) {
        baseCategory2Service.saveCategory2(baseCategory2);
        return Result.ok();
    }

    /**
     * 根据id删除二级分类数据
     *
     * @param id 二级分类id
     * @return com.hwd.gmall.common.result.Result<java.lang.Object>
     */
    @DeleteMapping(value = "/deleteCategory2/{id}")
    public Result<Object> deleteCategory2(@PathVariable(value = "id") Long id) {
        baseCategory2Service.deleteCategory2(id);
        return Result.ok();
    }

    /**
     * 修改二级分类数据
     *
     * @param baseCategory2 二级分类数据
     * @return com.hwd.gmall.common.result.Result<java.lang.Object>
     */
    @PutMapping(value = "updateCategory2")
    public Result<Object> updateCategory2(@RequestBody BaseCategory2 baseCategory2) {
        baseCategory2Service.updateCategory2(baseCategory2);
        return Result.ok();
    }

    /**
     * 分页查询
     *
     * @param page 当前页数
     * @param size 每页显示数量
     * @return com.hwd.gmall.common.result.Result<com.baomidou.mybatisplus.core.metadata.IPage < com.hwd.gmall.model.product.BaseCategory2>>
     */
    @GetMapping(value = "/page/{page}/{size}")
    public Result<IPage<BaseCategory2>> page(@PathVariable(value = "page") Integer page,
                                             @PathVariable(value = "size") Integer size) {
        return Result.ok(baseCategory2Service.page(page, size));
    }

    /**
     * 条件查询
     *
     * @param baseCategory2 查询条件
     * @return com.hwd.gmall.common.result.Result<java.util.List < com.hwd.gmall.model.product.BaseCategory2>>
     */
    @GetMapping(value = "/search")
    public Result<List<BaseCategory2>> search(@RequestBody BaseCategory2 baseCategory2) {
        return Result.ok(baseCategory2Service.search(baseCategory2));
    }

    /**
     * 分页条件查询
     *
     * @param baseCategory2 查询条件
     * @param page          当前页数
     * @param size          每页显示数量
     * @return com.hwd.gmall.common.result.Result<com.baomidou.mybatisplus.core.metadata.IPage < com.hwd.gmall.model.product.BaseCategory2>>
     */
    @GetMapping(value = "/search/{page}/{size}")
    public Result<IPage<BaseCategory2>> search(@RequestBody BaseCategory2 baseCategory2,
                                               @PathVariable(value = "page") Integer page,
                                               @PathVariable(value = "size") Integer size) {
        return Result.ok(baseCategory2Service.search(baseCategory2, page, size));
    }

}
